/*
Problem Description
输入一个十进制数N，将它转换成R进制数输出。
Input
输入数据包含多个测试实例，每个测试实例包含两个整数N(32位整数)和R（2<=R<=16, R<>10）。
Output
为每个测试实例输出转换后的数，每个输出占一行。如果R大于10，则对应的数字规则参考16进制（比如，10用A表示，等等）。
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
思路：采用辗转相除法思路，借助递归完成实现功能呢
*/
#include<iostream>

#include<cstdio>

using namespace std;

    int cnt = 0;
    char num[20];
    //辗转相除法
    void func(int a,int b){
        if(a == 0){
            return ;
        }
        func(a/b,b);
        num[cnt++] = a%b;
    }

int main(){
    int a,b;
    
    while(scanf("%d%d",&a,&b)!=EOF){
        //若果小于0 则去相反数，输出负号
        if(a < 0){
            printf("-");
            a = -a;
        }
        
        func(a,b);
        //读取数据
        for(int i = 0;i < cnt;i++){
            if(num[i] < 10){
                printf("%d",num[i]);
            }else{
                printf("%c",num[i]+'A'-10);
            }
        }
        //重置数组
        printf("\n");
        cnt = 0;
    }
    return 0;
}
